package com.bookmall.cart.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.SqlCondition;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.bookmall.common.entity.MyPageEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.ToString;
import com.ruoyi.common.core.annotation.Excel;

/**
 * 订单信息对象 order_info
 *
 * @author huyulu
 * @date 2022-04-21
 */
@Data
@ToString
public class OrderInfo extends MyPageEntity {
    private static final long serialVersionUID = 1L;

    /** id（订单表） */
    @TableId("id")
    private String id;

    /** 会员id */
    @Excel(name = "会员id")
    private String memberId;

    /** 订单号 */
    @Excel(name = "订单号")
    private String orderSn;

    /** 使用的优惠券id */
    @Excel(name = "使用的优惠券id")
    private String couponId;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 会员用户名 */
    @Excel(name = "会员用户名")
    private String memberUsername;

    /** 订单总金额 */
    @Excel(name = "订单总金额")
    private BigDecimal totalAmount;

    /** 订单应付金额 */
    @Excel(name = "订单应付金额")
    private BigDecimal payAmount;

    /** 订单运费 */
    @Excel(name = "订单运费")
    private BigDecimal freightAmount;

    /** 促销优化金额（促销价，满减价，阶梯价） */
    @Excel(name = "促销优化金额", readConverterExp = "促=销价，满减价，阶梯价")
    private BigDecimal promotionAmount;

    /** 优惠券抵扣金额 */
    @Excel(name = "优惠券抵扣金额")
    private BigDecimal couponAmount;

    /** 积分抵扣金额 */
    @Excel(name = "积分抵扣金额")
    private BigDecimal integrationAmount;

    /** 支付方式（0货到付款，1微信，2支付宝，3银联） */
    @Excel(name = "支付方式", readConverterExp = "0=货到付款,1=微信,2=支付宝,3=银联")
    private Integer payType;

    /** 订单状态（0待付款，1待发货，2已发货，3已完成） */
    @Excel(name = "订单状态", readConverterExp = "0=待付款,1=待发货,2=已发货,3=已完成")
    private Integer status;

    /** 配送方式（0自己配送） */
    @Excel(name = "配送方式", readConverterExp = "0=自己配送")
    private String deliveryCompany;

    /** 物流单号（0自己配送，无物流单号） */
    @Excel(name = "物流单号", readConverterExp = "0=自己配送")
    private String deliverySn;

    /** 自动确认接收时间（天） */
    @Excel(name = "自动确认接收时间", readConverterExp = "天=")
    private Integer autoConfirmDay;

    /** 可获得的积分 */
    @Excel(name = "可获得的积分")
    private Integer integration;

    /** 可获得的成长值 */
    @Excel(name = "可获得的成长值")
    private Integer growth;

    /** 发票类型（0无发票，1电子发票，2纸质发票） */
    @Excel(name = "发票类型", readConverterExp = "0=无发票,1=电子发票,2=纸质发票")
    private Integer billType;

    /** 发票抬头 */
    @Excel(name = "发票抬头")
    private String billHeader;

    /** 发票内容 */
    @Excel(name = "发票内容")
    private String billContent;

    /** 购买人姓名 */
    @Excel(name = "购买人姓名")
    private String billReceiveName;

    /** 购买人电话 */
    @Excel(name = "购买人电话")
    private String billReceivePhone;

    /** 购买人邮箱 */
    @Excel(name = "购买人邮箱")
    private String billReceiveEmail;

    /** 收货人姓名 */
    @Excel(name = "收货人姓名")
    @TableField(condition = SqlCondition.LIKE)
    private String receiverName;

    /** 收货人电话 */
    @Excel(name = "收货人电话")
    private String receiverPhone;

    /** 收货人省份 */
    @Excel(name = "收货人省份")
    private String receiverProvince;

    /** 收货人城市 */
    @Excel(name = "收货人城市")
    @TableField(condition = SqlCondition.LIKE)
    private String receiverCity;

    /** 收货人大学 */
    @Excel(name = "收货人大学")
    @TableField(condition = SqlCondition.LIKE)
    private String receiverUniversity;

    /** 收货人详细地址 */
    @Excel(name = "收货人详细地址")
    private String receiverDetailAddress;

    /** 订单备注 */
    @Excel(name = "订单备注")
    private String note;

    /** 收货状态（0未收货，1已收货） */
    @Excel(name = "收货状态", readConverterExp = "0=未收货,1=已收货")
    private Integer confirmStatus;

    /** 删除状态（0未删除，2已删除） */
    @Excel(name = "删除状态", readConverterExp = "0=未删除,2=已删除")
    private Integer deleteStatus;

    /** 支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentTime;

    /** 到货时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "到货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date deliveryTime;

    /** 收货时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "收货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date receiveTime;

    /** 评价时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "评价时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date commentTime;

    /** 修改时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date modifyTime;
}
